package pl.edu.agh.mwo.model;

import java.util.ArrayList;
import java.util.Date;

public class MenadzerPracownikow {
	
	private ArrayList <Pracownik> ListaPracownikow;
	
	public MenadzerPracownikow() {
		ListaPracownikow = new ArrayList();
	}
	
	public ArrayList<Pracownik> getListaPracownikow() {
		return ListaPracownikow;
	}

	public void dodajPracownika(String imie, String nazwisko, String projekt, Date data, int czasPracy) {
		if(sprawdzCzyIstniejePracownik(imie, nazwisko)){
			if(czyPosiadaJuzTakiProjekt(imie, nazwisko, projekt)) {
				dodajCzasProjektowiPracownika(imie, nazwisko, projekt, data, czasPracy);
			}
			else {
				dodajPracownikowiProjektICzas(imie, nazwisko, projekt, data, czasPracy);
			}
		}
		else {
			ListaPracownikow.add(new Pracownik(imie, nazwisko, czasPracy, projekt, data));
		}		
	}
	
	public int podajCzasPracyPracownikaDlaProjektu(String imie, String nazwisko, String projekt) {
		int ilosc = 0;
		for (Pracownik pracownik : ListaPracownikow){
			if (pracownik.getImie().equals(imie) && pracownik.getNazwisko().equals(nazwisko)) {
				ilosc = pracownik.podajCzasPracyDlaProjektu(projekt);
			}
		}
		return ilosc;
	}
	
	public int[] podajCzasPracyPracownikaDlaTyogodnia(String imie, String nazwisko) {
		int tab[] = new int [7];
		for (Pracownik pracownik : ListaPracownikow){
			if (pracownik.getImie().equals(imie) && pracownik.getNazwisko().equals(nazwisko)) {
				for(int i=0; i<7; i++)
					tab[i] = pracownik.podajCzasDlaDniaNr(i);
			}
		}
		return tab;
	}
	
	 
	private boolean sprawdzCzyIstniejePracownik(String imie, String nazwisko) {
		boolean istnieje = false;	
		for (Pracownik pracownik : ListaPracownikow){
			if (pracownik.getImie().equals(imie) && pracownik.getNazwisko().equals(nazwisko))
				istnieje = true;
		}	
		return istnieje;
	}	
	
	private boolean czyPosiadaJuzTakiProjekt(String imie, String nazwisko, String projekt) {
		boolean istnieje = false;	
		for (Pracownik pracownik : ListaPracownikow){
			if (pracownik.getImie().equals(imie) && pracownik.getNazwisko().equals(nazwisko)) {
				if(pracownik.czyPosiadaProjekt(projekt))
					istnieje = true;
			}		
		}	
		return istnieje;
	}
	
	private void dodajCzasProjektowiPracownika(String imie, String nazwisko, String projekt, Date data, int czasPracy) {
		for (Pracownik pracownik : ListaPracownikow){ 
			if (pracownik.getImie().equals(imie) && pracownik.getNazwisko().equals(nazwisko)) {
				pracownik.dodajCzasDlaProjektuPracownika(projekt, data, czasPracy);
			}
		}
	}
	
	private void dodajPracownikowiProjektICzas(String imie, String nazwisko, String projekt, Date data, int czasPracy) {
		for (Pracownik pracownik : ListaPracownikow) {
			if (pracownik.getImie().equals(imie) && pracownik.getNazwisko().equals(nazwisko)) {
				pracownik.dodajProjektPracownikowiICzasDlaNiego(projekt, data, czasPracy);
			}
		}
	}
	
	
	
}
